Прежде всего необходимо сказать, что в Crystal Reports определено два
вида форматирования:
- абсолютное форматирование;
- условное
форматирование.
В Шагах
Шаг 12 -
Форматирование полей данных.
Шаг 13 - Форматирование полей данных
далее.
Шаг 14 -
Форматирование полей данных далее.
мы уже рассматривали форматирование полей. Так вот, все, о чем тогда говорилось, относится к абсолютному форматированию. Применение Эксперта выделения можно тоже, с некоторой натяжкой, отнести к абсолютному форматированию. Условное форматирование производится с помощью механизма формул.
Давайте сделаем с помощью формул то же, что делали в прошлом шаге. Выделяем поле, и в контекстном меню выбираем Format Field. Появляется уже знакомый нам диалог форматирования. Переходим на вкладку Font.
Справа от поля Color находится кнопка
После ее нажатия появляется окно Format Editor.
Внешне это окно очень похоже на редактор формул, однако это не так. Изменилось содержимое проводника функций и проводника операций. (Внимание! Сейчас мы вводим формулу, определяющую цвет шрифта). Содержимое проводников изменяется в зависимости от редактируемого свойства. Вводим формулу:
if{@Sum}>200 Then Red
Чтобы записать формулу, нажмите кнопку вверху слева (с изображением дискетки). Обратите внимание: рисунок на кнопке, вызвавшей редактор, изменилось:
Это свидетельствует о том, что к данному свойству применяется условное форматирование. Теперь нам надо изменить цвет фона. Переходим на вкладку Border окна форматирования, и повторяем наши действия для фона. В окне редактора вводим формулу:
if{@Sum}>200 then Yellow
и сохраняем ее.
Однако, в окне предварительного просмотра мы получим странный результат:
Здесь проявилась важная особенность редактора форматирования. И если к полю применено условное форматирование, его абсолютное форматирование отменяется! Вообще-то в выражении if-else часть с else необязательна, но если ее нет, применяются установки по умолчанию. ( Свойства на вкладках игнорируются). Изменим формулу для фона:
if{@Sum}>200 Then Yellow else NoColor
Поверьте мне, теперь будет все нормально.